<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>web移动端开发技巧与注意事项汇总</title>
</head>
<body>
	
	一、meta的使用

	1、<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

	　　强制让文档的宽度与设备的宽度保持1:1，并且文档最大的宽度比例是1.0，且不允许用户点击屏幕放大浏览

	2、winphone系统a、input标签被点击时产生的半透明灰色背景怎么去掉：
	　　<meta name="msapplication-tap-highlight" content="no">

	3、忽略页面的数字为电话，忽略email识别
	　　<meta name="format-detection" content="telephone=no, email=no"/>

	二、针对适配等比缩放的方法:

	@media only screen and (min-width: 1024px){
	　　body{zoom:3.2;}
	}
	@media only screen and (min-width: 768px) and (max-width: 1023px) {
	　　body{zoom:2.4;}
	}
	@media only screen and (min-width: 640px) and (max-width: 767px) {
	　　body{zoom:2;}
	}
	@media only screen and (min-width: 540px) and (max-width: 639px) {
	　　body{zoom:1.68;}
	}
	@media only screen and (min-width: 480px) and (max-width: 539px) {
	　　body{zoom:1.5;}
	}
	@media only screen and (min-width: 414px) and (max-width: 479px) {
	　　body{zoom:1.29;}
	}
	@media only screen and (min-width: 400px) and (max-width: 413px) {
	　　body{zoom:1.25;}
	}
	@media only screen and (min-width: 375px) and (max-width: 413px) {
	　　body{zoom:1.17;}
	}
	@media only screen and (min-width: 360px) and (max-width:374px) {
	　　body{zoom:1.125;}
	}

	或如：

	@media all and (orientation : landscape) { 

	　　h2{color:red;}/*横屏时字体红色*/

	} 

	@media all and (orientation : portrait){ 

	　　h2{color:green;}/*竖屏时字体绿色*/

	} 

	三、布局

	1.布局使用百分比：

	　　不同的手机有着不同的分辨率，这时再用我们pc端布局常用的px就不合适了。使用百分比布局要时时刻刻清楚其父元素，因为子元素的百分比高度是根据父元素的高度来确定的，当父元素的高度为不确定值时，或者说父元素的高度未定义时，子元素的高度百分比将没有用（没有参照物）。所以只有设置了父元素的高度，子元素的高度百分比才会有用。

	2.em与rem：
	　　em是根据相对单位，不是固定的，他会继承父级元素的字体大小，若没有父级则em的相对基准点为浏览器的字体大小，浏览器的字体默认为16px，因此若无父级元素，相对于浏览器大小：Xem=X*16px;
	rem是css3新增属性，是完全相对于HTML根元素大小设定的，默认为10px，因此无论父级字体大小，1rem=10px。

	3.栅格布局：
	　　box-sizing:border-box;可以改变盒子模型的计算方式方便你设置宽进行自适应流式布局。

	4、wap页面有img标签，记得加上display：block；属性来解决img的边缘空白间隙的1px像素。如果图片要适应不同的手机要设置width:100%;而且不能添加高度。

	5、有关Flexbox弹性盒子布局一些属性
	　　1、不定宽高的水平垂直居中
	　　.xxx{
	　　　　position:absolute;
	　　　　top:50%;
	　　　　left:50%;
	　　　　z-index:3;
	　　　　-webkit-transform:translate(-50%，-50%)；
	　　　　border-radius:6px;
	　　　　background:#fff;
	　　}
	　　2、[flexbox版]不定宽高的水平垂直居中
	　　.xx{
	　　　　justify-content:center;//子元素水平居中，
	　　　　align-items:center;//子元素垂直居中;
	　　　　display:-webkit-flex;
	　　}

	四、文本的处理

	1、关闭iOS键盘首字母自动大写
	<input type="text" autocapitalize="off" />
	2、//单行文本溢出

	　　.xx{
	　　　　overflow:hidden;
	　　　　white-space:nowrap;
	　　　　text-overflow:ellipsis;
	　　}
	3、//多行文本溢出
	　　.xx{
	　　　　display:-webkit-box !importmort;
	　　　　overflow:hidden;
	　　　　text-overflow:ellipsis;
	　　　　word-break:break-all;
	　　　　-webkit-box-orient:vertical;
	　　　　-webkit-line-clamp:2;(数字2表示隐藏两行)
	　　}

	4、html {
	　　-webkit-text-size-adjust: 100%;
	　　}

	五、图片、媒体的处理

	1、//使用流体图片
	　　img{
	　　　　width:100%;
	　　　　height:auto;
	　　　　width:auto\9;
	　　}

	2、audio元素和video元素在ios和andriod中无法自动播放
	　　应对方案：触屏即播
	　　$('html').one('touchstart',function(){
	　　　　audio.play()
	　　})

	3、如何禁止保存或拷贝图像
	　　通常当你在手机或者pad上长按图像 img ，会弹出选项 存储图像 或者 拷贝图像，如果你不想让用户这么操作，那么你可以通过以下方法来禁止：
	　　img {
	　　　　-webkit-touch-callout: none;
	　　}
	　　PS：需要注意的是，该方法只在 iOS 上有效。

	六、阴影的处理

	　　1、 移动端如何清除输入框内阴影
	　　　　在iOS上，输入框默认有内部阴影，但无法使用 box-shadow 来清除，如果不需要阴影，可以这样关闭：
	　　　　input,textarea {
	　　　　　　border: 0;
	　　　　　　-webkit-appearance: none;
	　　　　}

	七、字体的处理

	　　对于网站字体设置
	　　1、移动端项目：
	　　font-family:Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC",sans-self;
	　　2、移动和pc端项目：
	　　font-family:Tahoma,Arial,Roboto,"Droid Sans","Helvetica Neue","Droid Sans Fallback","Heiti SC","Hiragino Sans GB",Simsun,sans-self;

	　　3、字体大小尽量使用pt或者em，rem，代替px。

	　　4、设置input里面placeholder字体的大小　::-webkit-input-placeholder{ font-size:10pt;}

	　　5、解决字体在移动端比例缩小后出现锯齿的问题：-webkit-font-smoothing: antialiased;

	八、圆角设置

	　　放一个图片或者一个按钮，设置圆角会比较美观，设置圆角的值可以用百分比，也可以用em等单位。　

	　　element{
	　　　　border: 1px solid #ccc;
	　　　　-moz-border-radius: 百分比;
	　　　　-webkit-border-radius: 百分比;
	　　　　border-radius: 百分比;
	　　}

	九、边距凹陷

	1、像素边框（例子:移动端列表的下边框）
	　　.list-iteam:after{
	　　　　position: absolute;
	　　　　left: 0px;
	　　　　right: 0px;
	　　　　content: '';
	　　　　height: 1px;
	　　　　transform: scaleY(0.5);
	　　　　-moz-transform: scaleY(0.5);
	　　　　-webkit-transform:scaleY(0.5);
	　　}

	2、 　

	　　与在pc端开发一样，开发过程中需要的一个很需要注意的问题的边距塌陷，典型的问题是margin-top的嵌套，对子元素设置margin-top值，子元素相对于父元素的位置没有变，而父元素跟着子元素一起向下移动响应的距离。其原理可参考本人之前的笔记css之BFC学习笔记，解决方案：

	1.给父元素div1设置一个padding值

	　　.div1{
	　　　　height: 500px;
	　　　　width: 100%;
	　　　　background: #ccc;
	　　　　padding-top: 1px;
	　　}

	2.给父元素div1设置一个overflow：hidden；在不加overflow:Hidden;的时候，margin-top:这个属性是认不到边的，也就是失效。但是ie浏览器解决了这个问题，火狐、谷歌之类的就会出现失效，所以这是个标准问题，也是个兼容问题。

	　.div1{

	　　height: 500px;
	　　width: 100%;
	　　background: #ccc;
	　　overflow: hidden;
	　　}

	十、禁止内容

	1、//禁止文本缩放
	html {
	-webkit-text-size-adjust: 100%;
	}

	2、移动端禁止选中内容
	如果你不想用户可以选中页面中的内容，那么你可以在css中禁掉：
	　　.user-select-none {
	　　　　-webkit-user-select: none;
	　　　　-moz-user-select: none;
	　　　　-ms-user-select: none;
	　　　}
	　　兼容IE6-9的写法：onselectstart="return false;" unselectable="on"

	十一、滚动效果

	 

	十二、快速回弹

	　　快速回弹滚动
	　　.xxx {
	　　　　overflow: auto;
	　　　　-webkit-overflow-scrolling: touch;
	　　}
	　　PS：iScroll用过之后感觉不是很好，有一些诡异的bug，这里推荐另外一个 iDangero Swiper，这个插件集成了滑屏滚动的强大功能（支持3D），而且还有回弹滚动的内置滚动条，官方地址：
	　　http://www.idangero.us/sliders/swiper/index.php

	十三、白色背景颜色搭配



	十四、常用的移动端开发框架以及工具

	框架
	1. 移动端基础框架
	　　zepto.js 语法与jquery几乎一样，会jquery基本会zepto~
	　　iscroll.js 解决页面不支持弹性滚动，不支持fixed引起的问题~ 实现下拉刷新，滑屏，缩放等功能~
	　　underscore.js 该库提供了一整套函数式编程的实用功能，但是没有扩展任何JavaScript内置对象。
	　　fastclick 加快移动端点击响应时间
	　　animate.css CSS3动画效果库
	　　Normalize.css Normalize.css是一种现代的、CSS reset为HTML5准备的优质替代方案
	2. 滑屏框架
	　　适合上下滑屏、左右滑屏等滑屏切换页面的效果
	　　slip.js
	　　iSlider.js
	　　fullpage.js
	　　swiper
	3.瀑布流框架
	　　masonry
	工具推荐
	　　caniuse 各浏览器支持html5属性查询
	　　paletton 调色搭配

	十五、动画的处理

	开启硬件加速
	解决页面闪白
	保证动画流畅
	.css {
	　　-webkit-transform: translate3d(0, 0, 0);
	　　-moz-transform: translate3d(0, 0, 0);
	　　-ms-transform: translate3d(0, 0, 0);
	　　transform: translate3d(0, 0, 0);
	}
	设计高性能CSS3动画的几个要素
	尽可能地使用合成属性transform和opacity来设计CSS3动画，
	不使用position的left和top来定位
	利用translate3D开启GPU加速

	十六、消除闪烁

	　　 消除transition闪屏
	　　.css{

	　　　　-webkit-transform-style: preserve-3d;

	　　　　-webkit-backface-visibility: hidden;
	　　}

	十七、移动端取消touch高亮效果
	　　在做移动端页面时，会发现所有a标签在触发点击时或者所有设置了伪类 :active 的元素，默认都会在激活状态时，显示高亮框，如果不想要这个高亮，那么你可以通过css以下方法来禁止：
	　　.xxx {
	　　　　-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
	　　}
</body>
</html>